<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function f(m, n) {
        n = n || 100
      }
      //默认值总原则：如果要设立函数参数的默认值，这些参数都应该放在函数的最后
      //参数的值，如果调用的时候有传值，就是以传递的值为准，没有传值用默认值代替
      function add(k, m = 1, n = 2) {
        return k + m + n
      }

      console.log(100) //103
      console.log(100, 200) //302
      console.log(100, 200, 300) //600

      console.log(add(100, 200, 300, 400)) //形参和实参数目不一致，400被忽略

      function add2(x = 1, y = x) {
        return x + y
      }

      //2、参数的默认值处理是在函数被调用时运行
      console.log(add2(100))

      function add3(
        x,
        y = (function () {
          console.log('xxx')
          return 100
        })()
      ) {
        return x + y
      }

      console.log(add3(100))[({}, {}, {}, {})]
    </script>
  </body>
</html>
